home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / Softshoe / Lisa's Mac Parts / Pascal Strings / Str.h < prev   
Text File  |  2000-06-23  |  4KB  |  120 lines

  1. // Str.h
  2.  
  3. #ifndef Str_h
  4. #define Str_h
  5.  
  6. #ifndef PString_h
  7. #include "PString.h"
  8. #endif
  9.  
  10. typedef unsigned char Str255[256];
  11. typedef unsigned char Str63[64];
  12. typedef unsigned char Str32[33];
  13. typedef unsigned char Str31[32];
  14. typedef unsigned char Str27[28];
  15. typedef unsigned char Str15[16];
  16.  
  17. template < uint32 size >
  18. class Str: public PString
  19.   {
  20.     protected:
  21.         uint8 characters[ size + 1 ];
  22.     
  23.     public:
  24.         Str()                                    : PString( Data( characters, size+1 ), "\p" )    {}
  25.         Str( PString text )                : PString( Data( characters, size+1 ), text )    {}
  26.         Str( ConstPString text )        : PString( Data( characters, size+1 ), text )    {}
  27.         Str( const uint8 *text )        : PString( Data( characters, size+1 ), text )    {}
  28.         Str( ConstData text )            : PString( Data( characters, size+1 ), text )    {}
  29.   };
  30.  
  31. class String255: public Str<255>
  32.   {
  33.     public:
  34.         String255()                                                                {}
  35.         String255( PString text )                : Str<255>( text )    {}
  36.         String255( ConstPString text )        : Str<255>( text )    {}
  37.         String255( const uint8 *text )        : Str<255>( text )    {}
  38.         String255( ConstData text )            : Str<255>( text )    {}
  39.         
  40.         operator uint8 *()                { return characters; }
  41.         operator Str255&()                { return characters; }
  42.         operator Str63&()                    { return characters; }
  43.         operator Str32&()                    { return characters; }
  44.         operator Str31&()                    { return characters; }
  45.         operator Str27&()                    { return characters; }
  46.         operator Str15&()                    { return characters; }
  47.   };
  48.  
  49. class String63: public Str<63>
  50.   {
  51.     public:
  52.         String63()                                                                {}
  53.         String63( PString text )                : Str<63>( text )        {}
  54.         String63( ConstPString text )            : Str<63>( text )        {}
  55.         String63( const uint8 *text )            : Str<63>( text )        {}
  56.         String63( ConstData text )                : Str<63>( text )        {}
  57.         
  58.         operator Str63&()                    { return characters; }
  59.         operator Str32&()                    { return characters; }
  60.         operator Str31&()                    { return characters; }
  61.         operator Str27&()                    { return characters; }
  62.         operator Str15&()                    { return characters; }
  63.   };
  64.  
  65. class String32: public Str<32>
  66.   {
  67.     public:
  68.         String32()                                                                {}
  69.         String32( PString text )                : Str<32>( text )        {}
  70.         String32( ConstPString text )            : Str<32>( text )        {}
  71.         String32( const uint8 *text )            : Str<32>( text )        {}
  72.         String32( ConstData text )                : Str<32>( text )        {}
  73.         
  74.         operator Str32&()                    { return characters; }
  75.         operator Str31&()                    { return characters; }
  76.         operator Str27&()                    { return characters; }
  77.         operator Str15&()                    { return characters; }
  78.   };
  79.  
  80. class String31: public Str<31>
  81.   {
  82.     public:
  83.         String31()                                                                {}
  84.         String31( PString text )                : Str<31>( text )        {}
  85.         String31( ConstPString text )            : Str<31>( text )        {}
  86.         String31( const uint8 *text )            : Str<31>( text )        {}
  87.         String31( ConstData text )                : Str<31>( text )        {}
  88.         
  89.         operator Str31&()                    { return characters; }
  90.         operator Str27&()                    { return characters; }
  91.         operator Str15&()                    { return characters; }
  92.   };
  93.  
  94. class String27: public Str<27>
  95.   {
  96.     public:
  97.         String27()                                                                {}
  98.         String27( PString text )                : Str<27>( text )        {}
  99.         String27( ConstPString text )            : Str<27>( text )        {}
  100.         String27( const uint8 *text )            : Str<27>( text )        {}
  101.         String27( ConstData text )                : Str<27>( text )        {}
  102.         
  103.         operator Str27&()                    { return characters; }
  104.         operator Str15&()                    { return characters; }
  105.   };
  106.  
  107. class String15: public Str<15>
  108.   {
  109.     public:
  110.         String15()                                                                {}
  111.         String15( PString text )                : Str<15>( text )        {}
  112.         String15( ConstPString text )            : Str<15>( text )        {}
  113.         String15( const uint8 *text )            : Str<15>( text )        {}
  114.         String15( ConstData text )                : Str<15>( text )        {}
  115.         
  116.         operator Str15&()                    { return characters; }
  117.   };
  118.  
  119. #endif
  120.